zhouqijie

Unity的GameObject类



GameObject创建

CRE:创建即加入场景??

    => CreateGameObject()      
        => GameObject &go = *NEW_OBJECT (GameObject);
        => ActivateGameObject (go, name);
                => GameObject::Reset ()  
                => GameObject::SetName ()  
                => GameObject::AwakeFromLoad ()  
                => GameObject::Activate ()  
                    => UpdateActiveGONode()  
                        => Cre:移除或者加入GameObjectManager的GONode列表。    



GameObject列表管理

貌似没有管理GO的Scene或World类。

貌似是使用GameObjectManager单例管理。
貌似只管理TaggedGameObjects和ActiveGameObjects?不管理Inactive的GameObject?



AddComponent方法

Unity很多地方使用ImmediatePtr<>作为指针。
在GameObject.h和GameObjectUtility.h中有不同定义。
Mono脚本很多地方需要特殊处理。

AddComponent(GameObject&, ClassID...)

AddComponentInterval(Gameobject&, ClassID, MonoScriptPtr, std::set<ScriptingClassPtr> &...)

AddComponentUnchecked (GameObject& go, int classID, MonoScriptPtr script...)

GameObject.AddComponentInternal (Component*)